(component
  (type (;0;)
    (instance
      (export (;0;) "b" (type (sub resource)))
      (type (;1;) (own 0))
      (type (;2;) (func (param "y" u32) (result 1)))
      (export (;0;) "[constructor]b" (func (type 2)))
      (export (;3;) "a" (type (sub resource)))
    )
  )
  (import "a" (instance (;0;) (type 0)))
  (component (;0;)
    (type (;0;)
      (instance
        (export (;0;) "b" (type (sub resource)))
        (type (;1;) (own 0))
        (type (;2;) (func (param "y" u32) (result 1)))
        (export (;0;) "[constructor]b" (func (type 2)))
      )
    )
    (import "a" (instance (;0;) (type 0)))
    (type (;1;)
      (instance)
    )
    (import "b" (instance (;1;) (type 1)))
  )
  (component (;1;)
    (type (;0;)
      (instance
        (export (;0;) "a" (type (sub resource)))
        (export (;1;) "b" (type (sub resource)))
        (type (;2;) (own 1))
        (type (;3;) (func (param "y" u32) (result 2)))
        (export (;0;) "[constructor]b" (func (type 3)))
      )
    )
    (import "a" (instance (;0;) (type 0)))
  )
  (instance (;1;) (instantiate 1
      (with "a" (instance 0))
    )
  )
  (instance (;2;) (instantiate 0
      (with "b" (instance 1))
      (with "a" (instance 0))
    )
  )
)
